var express = require('express');
var router = express.Router();
var CONFIG = require('../../../common/config');
var CODE = require('../../../common/code');
var superagent = require('superagent');

var retUtil = require('./util/retUtil');
var documentUtil = require('./util/documentUtil');
var orderUtil = require('./util/orderUtil');
var userUtil = require('./util/userUtil');
var sundryUtil = require('./util/sundryUtil');
var moment = require('moment');
var userRouterUtil = require('./routerUtil/userRouterUtil');


router.get('/',function (req, res, next) {
    res.send('respond with a user resource');
});


/**
 * 修改用户信息
 *
 * @author 严旭东
 * @date 2017-11-15
 *
 *          device: 是
 *                   6字段为 一键秀 相关标记
 *                   600 一键秀网页端
 *                   610 一键秀 android 端
 *                   620 一键秀 iOS 端
 *                   630 一键秀 嵌入网页端
 *                   640 一键秀微信端
 *                   650 一键秀小程序端
 *          userId:是 （用户唯一标识）
 *          nickName: 否 用户昵称
 *          avatarUrl: 否 用户头像
 *          sign: 否 用户签名
 *          注：nickName，avatarUrl，sign必传一个
 * 返回
 *          data {"success":1,"msg":"成功","data":{}}
 *          err {"success":0,"msg":"失败","data":{}}
 * 测试地址： http://localhost:3000/yjx/v1/user/updateUserInfo_v1_0?device=610&userId=1&sign=31
 * */
function updateUserInfo_v1_0(req,res,next){
    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    var nickName = retUtil.stringFromReq(req,'nickName');
    var avatarUrl = retUtil.stringFromReq(req,'avatarUrl');
    var sign = retUtil.stringFromReq(req,'sign');
    if(userId<=0){
        return retUtil.ret_err_json('用户唯一标识无效',res)
    }
    if(!nickName&&!avatarUrl&&!sign){
        return retUtil.ret_err_json('参数错误',res)
    }
    userUtil.updateUserInfo_v1_0(userId,nickName,avatarUrl,sign,function(err,data){
        if(err){
            return retUtil.ret_err_json(err,res)
        }
        retUtil.ret_succ_json(data,res)
    })
}
router.get('/updateUserInfo_v1_0', updateUserInfo_v1_0);
router.post('/updateUserInfo_v1_0', updateUserInfo_v1_0);


/***
 * 发送验证码
 * @author 李强
 * @date 2017-11-16
 * 方式: GET
 * 参数: device: 0表示从pc来的请求1表示ios/2表示android/101表示pc美化大师/102表示pc wps/103表示wps android/104表示wps ios
 * 参数: mobile: 手机号
 * 参数: zone: 手机号对应区号(默认 +86)
 * 参数: type: 验证码类型, 暂定如下:1 短信验证码2 语音验证码暂时固定为1
 * 返回: {}
 *测试地址 : http://localhost:3000/yjx/v1/user/getMobileVerCode_v1_0?device=610&mobile=18202755833&zone=+86&type=1
 */
function getMobileVerCode_v1_0(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");//设置跨域访问:

    var device = retUtil.numberFromReq(req, 'device');
    var mobile = retUtil.numberFromReq(req, 'mobile');
    var zone = retUtil.numberFromReq(req, 'zone') || 86;
    var type = retUtil.numberFromReq(req, 'type') || 1;
    if (mobile <= 0 || !((/^1\d{10}$/).test(mobile))) {
        return retUtil.ret_err_json("请输入正确的手机号", res);
    }
    if (type == 1) {
        userUtil.getMobileVerCode_v1_0(zone,mobile, function (err,data) {
            if(err){
                return retUtil.ret_err_json(err, res);
            }
            return retUtil.ret_succ_json({}, res);
        })
    }else{
        return retUtil.ret_err_json("暂不支持其它获取验证码的方式", res);
    }
}
router.post('/getMobileVerCode_v1_0', getMobileVerCode_v1_0);
router.get('/getMobileVerCode_v1_0', getMobileVerCode_v1_0);



//================================================================


/**
 * 提交建议
 *
 * @author 严旭东
 * @date 2017-11-15
 *
 *  device: 是
 *           6字段为 一键秀 相关标记
 *           600 一键秀网页端
 *           610 一键秀 android 端
 *           620 一键秀 iOS 端
 *           630 一键秀 嵌入网页端
 *           640 一键秀微信端
 *           650 一键秀小程序端
 *  userId: （用户唯一标识）
 *  text:  用户建议
 *  deviceDesc: 意见反馈用户选填的设备信息
 *  deviceInfo: 自动搜集信息
 *  images: 意见反馈添加截图的 url 数组的 json 字符串
 *  mobile: 可选参数, 手机号
 *  注:text，userId，device必传
 * 返回
 *          data {"success":1,"msg":"成功","data":1}
 *          err {"success":0,"msg":"失败","data":0}
 * 测试地址： http://localhost:3000/yjx/v1/user/sendFeedback_v1_0?device=610&text=%E6%B5%8B%E8%AF%95&userId=123
 */
function sendFeedback_v1_0 (req,res,next){
    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    var text = retUtil.stringFromReq(req,'text');
    var deviceDesc = retUtil.stringFromReq(req,'deviceDesc');
    var deviceInfo = retUtil.stringFromReq(req,'deviceInfo');
    var images = retUtil.stringFromReq(req,'images');
    var mobile = retUtil.stringFromReq(req,'mobile');
    if(userId<=0){
        retUtil.ret_err_json('用户唯一标识无效',res)
    }
    if(!text){
        retUtil.ret_err_json('参数错误',res)
    }
    userUtil.sendFeedback_v1_0(device,userId,text,deviceDesc,deviceInfo,images,mobile,function(err,data){
        if(err){
           return retUtil.ret_err_json(err,res)
        }
       return retUtil.ret_succ_json(data,res)
    })
}
router.get('/sendFeedback_v1_0', sendFeedback_v1_0);
router.post('/sendFeedback_v1_0', sendFeedback_v1_0);


//================================================================


/**
 * 获取用户资料
 *
 * @author 李强
 * @date 2017-11-17
 *
 *  device: 是
 *           6字段为 一键秀 相关标记
 *           600 一键秀网页端
 *           610 一键秀 android 端
 *           620 一键秀 iOS 端
 *           630 一键秀 嵌入网页端
 *           640 一键秀微信端
 *           650 一键秀小程序端
 *  userId: （用户唯一标识）
 * 返回 :    http://114.55.172.253:7000/mock/11/yjx/v1/user/getUserDetailInfo_v1_0
 * 测试地址： http://localhost:3000/yjx/v1/user/getUserDetailInfo_v1_0?userId=299188&device=610
 * */
function getUserDetailInfo_v1_0 (req,res,next){
    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId') || 0;
    if(userId<=0){
        return retUtil.ret_err_json('用户唯一标识无效',res)
    }
    userUtil.getUserDetailInfo_v1_0(userId,function(err,data){
        if(err){
            return retUtil.ret_err_json(err,res)
        }
        return retUtil.ret_succ_json(data,res)
    })
}
router.get('/getUserDetailInfo_v1_0', getUserDetailInfo_v1_0);
router.post('/getUserDetailInfo_v1_0', getUserDetailInfo_v1_0);





//===================================================================================



/**
 * 删除作品
 *
 * @author 严旭东
 * @date 2017-11-16
 *
 *  device: 是
 *           6字段为 一键秀 相关标记
 *           600 一键秀网页端
 *           610 一键秀 android 端
 *           620 一键秀 iOS 端
 *           630 一键秀 嵌入网页端
 *           640 一键秀微信端
 *           650 一键秀小程序端
 *  userId: （用户唯一标识）
 *  docId:  作品唯一标识
 * 返回
 *          data {"success":1,"msg":"成功","data":1}
 *          err {"success":0,"msg":"失败","data":0}
 * 测试地址： http://localhost:3000/yjx/v1/user/removeUserDoc_v1_0?device=610&userId=123&docId=1
 * */
function removeUserDoc_v1_0(req,res,next){
    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    var docId = retUtil.numberFromReq(req,'docId');
    if(userId<=0){
        return retUtil.ret_err_json('用户唯一标识无效',res)
    }
    if(!docId){
       return retUtil.ret_err_json('作品id无效',res)
    }
    userUtil.removeUserDoc_v1_0(userId,docId,function(err,data){
        if(err){
          return  retUtil.ret_err_json(err,res)
        }
        return retUtil.ret_succ_json(data,res)
    })
}
router.get('/removeUserDoc_v1_0', removeUserDoc_v1_0);
router.post('/removeUserDoc_v1_0', removeUserDoc_v1_0);


/**
 * 修改作品名称
 *
 * @author 严旭东
 * @date 2017-11-16
 *
 *  device: 是
 *           6字段为 一键秀 相关标记
 *           600 一键秀网页端
 *           610 一键秀 android 端
 *           620 一键秀 iOS 端
 *           630 一键秀 嵌入网页端
 *           640 一键秀微信端
 *           650 一键秀小程序端
 *  userId: （用户唯一标识）
 *  docId:  作品唯一标识
 *  doc_name：修改作品名
 * 返回
 *          data {"success":1,"msg":"成功","data"{}}
 *          err {"success":0,"msg":"失败","data":{}}
 * 测试地址： http://localhost:3000/yjx/v1/user/renameUserDoc_v1_0?device=610&userId=1&docId=1&name=qweq
 * */
function renameUserDoc_v1_0 (req,res,next){
    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    var docId = retUtil.numberFromReq(req,'docId');
    var doc_name = retUtil.stringFromReq(req,'name');
    if(userId<=0){
        return retUtil.ret_err_json('用户唯一标识无效',res)
    }
    if(docId<=0){
        return retUtil.ret_err_json('作品唯一标识无效',res)
    }
    if(!doc_name){
        return retUtil.ret_err_json('参数错误',res)
    }
    userUtil.renameUserDoc_v1_0(userId,docId,doc_name,function(err,data){
        if(err){
            return retUtil.ret_err_json(err,res)
        }
        return retUtil.ret_succ_json(data,res)
    })
}
router.get('/renameUserDoc_v1_0', renameUserDoc_v1_0);
router.post('/renameUserDoc_v1_0', renameUserDoc_v1_0);

/**
 * 获取用户收藏列表
 *
 * @author 毛凯
 * @date 2017-11-17
 *
 * device	    是     610     6 字段为 一键秀 相关标记
 *                           600 一键秀网页端
 *                           610 一键秀 android 端
 *                           620 一键秀 iOS 端
 *                           630 一键秀 嵌入网页端
 *                           640 一键秀微信端
 *                           650 一键秀小程序端
 * userId	    是    299188   用户唯一标识
 * pageNum	    是      0      页码
 * pageSize	    是     12      页容量, 需大于0
 * withTotalPage 否    1       0/1, 1, 标记需要获取总页数, 未传递或者为0, 标记不获取总页数, 默认为0
 * 参见接口 ：http://114.55.172.253:7000/project/11/interface/api/39
 * 测试地址 ：http://localhost:3000/yjx/v1/user/getUserCollectList_v1_0?device=6&userId=299163&pageNum=0&pageSize=12&withTotalPage=(0/1)
 */

function getUserCollectList_v1_0(req,res,next){
    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    var pageNum = retUtil.numberFromReq(req,'pageNum');
    var pageSize = retUtil.numberFromReq(req,'pageSize');
    var withTotalPage = retUtil.numberFromReq(req,'withTotalPage');
    if(device<=0 || userId<=0 || pageNum < 0 || pageSize <=0){
        return retUtil.ret_err_json("参数有误",res);
    }
    userUtil.getUserCollectList_v1_0(userId, pageNum, pageSize, withTotalPage,function (getListErr, data) {
        if (getListErr) {
            console.log('yjx/v1/usesr.js [getUserCollectList_v1_0] getUserCollectList_v1_0 getListErr'+getListErr);
            return retUtil.ret_err_json(getListErr, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}

router.get('/getUserCollectList_v1_0', getUserCollectList_v1_0);
router.post('/getUserCollectList_v1_0', getUserCollectList_v1_0);


/**
 *
 * 手机号+验证码登录
 *
 * @author 毛凯
 * @date 2017-11-18
 *
 *
 * device  是  610   6 字段为 一键秀 相关标记
 *                   600 一键秀网页端
 *                   610 一键秀 android 端
 *                   620 一键秀 iOS 端
 *                   630 一键秀 嵌入网页端
 *                   640 一键秀微信端
 *                   650 一键秀小程序端
 * zone	   是  +86 国际区号, 暂时固定传 +86
 * mobile  是 18888888888  用户手机号, 验证规则同获取验证码
 * verCode 是 878789 六位验证码
 * 参见接口：http://114.55.172.253:7000/project/11/interface/api/31
 * 测试地址：http://localhost:3000/yjx/v1/user/loginByMobileCode_v1_0?device=610&zone=+86&mobile=13469974378&verCode=123456
 */

function loginByMobileCode_v1_0(req,res,next){
    var device = retUtil.numberFromReq(req,'device');
    var zone = retUtil.numberFromReq(req,'zone');
    var mobile = retUtil.stringFromReq(req,'mobile');
    var verCode = retUtil.stringFromReq(req,'verCode');
    if(device<=0 || verCode.length != 6 || !zone  || zone <= 0  ){
        console.log("loginByMobileCode_v1_0 .... device="+device+"verCode.length="+verCode.length+"zone="+zone+"zone.length="+zone.length);
        return retUtil.ret_err_json("验证码有误",res);
    }
    //验证手机号是否合法正则
    var reg = /^1\d{10}$/;
    //验证手机号的合法性
    if(!(reg.test(mobile))){
        return retUtil.ret_err_json("手机号有误",res);
    }
    userUtil.loginByMobileCode_v1_0(zone, mobile, verCode,function (getErr, userId) {
        if (getErr) {
            console.log('yjx/v1/usesr.js [loginByMobileCode_v1_0] loginByMobileCode_v1_0 getErr'+getErr);
            return retUtil.ret_err_json(getErr, res);
        }
        userUtil.getUserDetailInfo_v1_0(userId,function(err,data){
            if(err){
                console.log('yjx/v1/usesr.js [loginByMobileCode_v1_0 getUserDetailInfo_v1_0 ] loginByMobileCode_v1_0 getErr'+err);
                retUtil.ret_err_json(userId,res);
            }
            retUtil.ret_succ_json(data,res);
        })

    });
}

router.get('/loginByMobileCode_v1_0', loginByMobileCode_v1_0);
router.post('/loginByMobileCode_v1_0', loginByMobileCode_v1_0);

/**
 *
 * 手机号+验证码验证
 *
 * @author 毛凯
 * @date 2017-11-18
 *
 *
 * device  是  610   6 字段为 一键秀 相关标记
 *                   600 一键秀网页端
 *                   610 一键秀 android 端
 *                   620 一键秀 iOS 端
 *                   630 一键秀 嵌入网页端
 *                   640 一键秀微信端
 *                   650 一键秀小程序端
 * zone	   是  +86 国际区号, 暂时固定传 +86
 * mobile  是 18888888888  用户手机号, 验证规则同获取验证码
 * verCode 是 878789 六位验证码
 * 参见接口：http://114.55.172.253:7000/project/11/interface/api/31
 * 测试地址：http://localhost:3000/yjx/v1/user/checkMobileCode_v1_0?device=610&zone=+86&mobile=13469974378&verCode=123456
 */

function checkMobileCode_v1_0(req,res,next){
    res.header("Access-Control-Allow-Origin", "*");//设置跨域访问

    var device = retUtil.numberFromReq(req,'device');
    var zone = retUtil.numberFromReq(req,'zone');
    var mobile = retUtil.stringFromReq(req,'mobile');
    var verCode = retUtil.stringFromReq(req,'verCode');
    if(device<=0 || verCode.length != 6 || !zone  || zone <= 0  ){
        console.log("checkMobileCode_v1_0 .... device="+device+"verCode.length="+verCode.length+"zone="+zone+"zone.length="+zone.length);
        return retUtil.ret_err_json("验证码有误",res);
    }
    //验证手机号是否合法正则
    var reg = /^1\d{10}$/;
    //验证手机号的合法性
    if(!(reg.test(mobile))){
        return retUtil.ret_err_json("手机号有误",res);
    }
    userUtil.validByVerCode(zone, mobile, verCode,function (getErr, userId) {
        if (getErr) {
            console.log('yjx/v1/usesr.js [validByVerCode] checkMobileCode_v1_0 getErr'+getErr);
            return retUtil.ret_err_json(getErr, res);
        }
        retUtil.ret_succ_json({},res);
    });
}

router.get('/checkMobileCode_v1_0', checkMobileCode_v1_0);
router.post('/checkMobileCode_v1_0', checkMobileCode_v1_0);

/**
 * 获取用户作品列表
 *
 * @author 严旭东
 * @date 2017-11-18
 *
 *  device: 是
 *           6字段为 一键秀 相关标记
 *           600 一键秀网页端
 *           610 一键秀 android 端
 *           620 一键秀 iOS 端
 *           630 一键秀 嵌入网页端
 *           640 一键秀微信端
 *           650 一键秀小程序端
 *  userId: （用户唯一标识）
 *  pageNum:  页码, 从0开始
 *  pageSize：页容量, 大于0
 *  withTotalPage: 1 标识获取总页数, 0或不传递标识不获取总页数, 默认为0
 * 返回
 *          data 详情参考http://114.55.172.253:7000/project/11/interface/api/40
 *          err {"success":0,"msg":"失败","data":{}}
 * 测试地址：http://localhost:3000/yjx/v1/user/getUserWorkList_v1_0?device=610&userId=1&pageNum=0&pageSize=4&withTotalPage=1
 * */

function getUserWorkList_v1_0 (req,res,next){
    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    var pageNum = retUtil.numberFromReq(req,'pageNum');
    var pageSize = retUtil.numberFromReq(req,'pageSize');
    var withTotalPage = retUtil.numberFromReq(req,'withTotalPage');
    if(userId<=0){
        return retUtil.ret_err_json('用户唯一标识无效',res)
    }
    if(pageNum<0){
        return retUtil.ret_err_json('pageNum参数错误',res)
    }
    if(pageSize<=0){
        return retUtil.ret_err_json('pageSize参数错误',res)
    }
    userUtil.getUserWorkList_v1_0(userId,pageNum,pageSize,withTotalPage,function(err,data){
        if(err){
            return retUtil.ret_err_json(err,res)
        }
        return retUtil.ret_succ_json(data,res)
    })
}
router.get('/getUserWorkList_v1_0', getUserWorkList_v1_0);
router.post('/getUserWorkList_v1_0', getUserWorkList_v1_0);

/**
 *
 * 第三方登录
 *
 * @author 毛凯
 * @date 2017-11-18
 *
 *
 * device    是  610   6 字段为 一键秀 相关标记
 *                   600 一键秀网页端
 *                   610 一键秀 android 端
 *                   620 一键秀 iOS 端
 *                   630 一键秀 嵌入网页端
 *                   640 一键秀微信端
 *                   650 一键秀小程序端
 * nickName  是  哈哈 该平台用户昵称
 * avatarUrl 是       该平台用户头像
 * field1    是  o07tHvwn0tck-ST-cDShA2UM_k4Q 各平台的全平台唯一标识, 如微信的 unionid
 * platform  是  1   第三方平台标记  20 标记微信
 *                                  21 标记QQ
 *                                  30 标记小米登录
 *                                  40 标记新浪微博
 * field2    是 oi9hmuP_zpcmVwkznvHq4IyVtdf0 各平台的单一平台唯一标识, 如微信的 openid
 * field3	否 预留字段, 详见备注
 * field4	否 预留字段, 详见备注
 * field5	否 预留字段, 详见备注
 * 参见接口：http://114.55.172.253:7000/project/11/interface/api/32
 * 测试地址：http://localhost:3000/yjx/v1/user/loginByThirdPlatform_v1_0?device=610&nickName=哈哈&avatarUrl=gfdgfdg&field1=44325&platform=20&field2=fsdfdsf
 */
function loginByThirdPlatform_v1_0(req,res,next){
    var device = retUtil.numberFromReq(req,'device');
    var nickName = retUtil.stringFromReq(req,'nickName');
    var avatarUrl = retUtil.stringFromReq(req,'avatarUrl');
    var field1 = retUtil.stringFromReq(req,'field1');
    var platform = retUtil.numberFromReq(req,'platform');
    var field2 = retUtil.stringFromReq(req,'field2');
    var field3 = retUtil.stringFromReq(req,'field3');
    var field4 = retUtil.stringFromReq(req,'field4');
    var field5 = retUtil.stringFromReq(req,'field5');
    if(device<=0 || !platform || !field1 ){
        return retUtil.ret_err_json("参数有误",res);
    }
    userUtil.loginByThirdPlatform_v1_0(nickName, avatarUrl, field1,platform,field2,field3,field4,field5,function (getErr, userId) {
        if (getErr) {
            console.log('yjx/v1/usesr.js [loginByThirdPlatform_v1_0] loginByThirdPlatform_v1_0 getErr'+getErr);
            return retUtil.ret_err_json(getErr, res);
        }
        userUtil.getUserDetailInfo_v1_0(userId,function(err,data){
            if(err){
                console.log('yjx/v1/usesr.js [loginByThirdPlatform_v1_0 loginByThirdPlatform_v1_0 ] loginByThirdPlatform_v1_0 getErr'+err);
                return retUtil.ret_err_json(userId,res);
            }
            retUtil.ret_succ_json(data,res);
        })

    });
}

router.get('/loginByThirdPlatform_v1_0', loginByThirdPlatform_v1_0);
router.post('/loginByThirdPlatform_v1_0', loginByThirdPlatform_v1_0);

/**
 *
 * 第三方登录
 *
 * @author 王俊
 * @date 2017-11-18
 *
 *
 * device    是  610   6 字段为 一键秀 相关标记
 *                   600 一键秀网页端
 *                   610 一键秀 android 端
 *                   620 一键秀 iOS 端
 *                   630 一键秀 嵌入网页端
 *                   640 一键秀微信端
 *                   650 一键秀小程序端
 * nickName  是  哈哈 该平台用户昵称
 * avatarUrl 是       该平台用户头像
 * field1    是  o07tHvwn0tck-ST-cDShA2UM_k4Q 各平台的全平台唯一标识, 如微信的 openid
 * platform  是  1   第三方平台标记  20 标记微信
 *                                  21 标记QQ
 *                                  30 标记小米登录
 *                                  40 标记新浪微博
 * field2    是 oi9hmuP_zpcmVwkznvHq4IyVtdf0 各平台的单一平台唯一标识, 如微信的 unionid
 * field3	否 预留字段, 详见备注
 * field4	否 预留字段, 详见备注
 * field5	否 预留字段, 详见备注
 * 参见接口：http://114.55.172.253:7000/project/11/interface/api/32
 * 测试地址：http://localhost:3000/yjx/v1/user/loginByThirdPlatform_v1_0?device=610&nickName=哈哈&avatarUrl=gfdgfdg&field1=44325&platform=20&field2=fsdfdsf
 */
function loginByThirdPlatform_v1_0_1(req,res,next){
    var device = retUtil.numberFromReq(req,'device');
    var platform = retUtil.numberFromReq(req,'platform');
    var nickName = retUtil.stringFromReq(req,'nickName');
    var avatarUrl = retUtil.stringFromReq(req,'avatarUrl');
    var field1 = retUtil.stringFromReq(req,'field1');
    var field2 = retUtil.stringFromReq(req,'field2');
    var field3 = retUtil.stringFromReq(req,'field3');
    var field4 = retUtil.stringFromReq(req,'field4');
    var field5 = retUtil.stringFromReq(req,'field5');
    if(device<=0 || !platform || !field1 ){
        return retUtil.ret_err_json('参数错误',res);
    }
    if(platform === 20 && !(field2 || field3 )){
        return retUtil.ret_err_json('参数错误', res);
    }
    if(platform !== 20) {
        return retUtil.ret_err_json('暂不支持的平台', res);
    }

    var opt ={
        device: device,
        platform: platform,
        nickName: nickName,
        avatarUrl: avatarUrl,
        field1: field1,
        field2: field2,
        field3: field3,
        field4: field4,
        field5: field5,
    };
    userRouterUtil.loginByThirdPlatform(opt, function (error, data) {
        if(error) return retUtil.ret_err_json(error, res);
        return retUtil.ret_succ_json(data, res);
    });

    // userUtil.loginByThirdPlatform_v1_0_1(device,platform, nickName, avatarUrl, field1,field2,field3,field4,field5,function (getErr, userId) {
    //     if (getErr) {
    //         console.log('yjx/v1/usesr.js [loginByThirdPlatform_v1_0] loginByThirdPlatform_v1_0 getErr'+getErr);
    //         return retUtil.ret_err_json(getErr, res);
    //     }
    //     userUtil.getUserDetailInfo_v1_0(userId,function(err,data){
    //         if(err){
    //             console.log('yjx/v1/usesr.js [loginByThirdPlatform_v1_0 loginByThirdPlatform_v1_0 ] loginByThirdPlatform_v1_0 getErr'+err);
    //             return retUtil.ret_err_json(userId,res);
    //         }
    //         retUtil.ret_succ_json(data,res);
    //     });
    // });
}

router.get('/loginByThirdPlatform_v1_0_1', loginByThirdPlatform_v1_0_1);
router.post('/loginByThirdPlatform_v1_0_1', loginByThirdPlatform_v1_0_1);

/**
 * 获取用户个人中心显示数据
 *
 * @author 严旭东
 * @date 2017-11-18
 *
 * 该接口与版本3.0修改新增opType 参数区分普通作品和自由创建作品
 *  device: 是
 *           6字段为 一键秀 相关标记
 *           600 一键秀网页端
 *           610 一键秀 android 端
 *           620 一键秀 iOS 端
 *           630 一键秀 嵌入网页端
 *           640 一键秀微信端
 *           650 一键秀小程序端
 *  userId: 用户唯一标识
 *  docCnt: 用户作品列表请求个数
 *  opTypes : opType 数组的 json 字符串, 默认为 [2]
 * 返回
 *          data 详情参考http://114.55.172.253:7000/project/11/interface/api/40
 *          err {"success":0,"msg":"失败","data":{}}
 * 测试地址：http://localhost:3000/yjx/v1/user/getPersonalCenterInfo_v1_0?device=610&userId=1&docCnt=4
 * */
function getPersonalCenterInfo_v1_0 (req,res,next){
    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    var docCnt = retUtil.numberFromReq(req,'docCnt');
    var opTypes = retUtil.arrayFromReq(req,'opTypes') || [2];
    if(userId<=0){
        return retUtil.ret_err_json('用户唯一标识无效',res)
    }
    if(docCnt<=0 || !opTypes){
        return retUtil.ret_err_json('参数错误',res)
    }
    opTypes = opTypes.toString();
    userUtil.getPersonalCenterInfo_v1_0(userId,docCnt,opTypes,function(err,data){
        if(err){
            return retUtil.ret_err_json(err,res)
        }
        return retUtil.ret_succ_json(data,res)
    })
}
router.get('/getPersonalCenterInfo_v1_0', getPersonalCenterInfo_v1_0);
router.post('/getPersonalCenterInfo_v1_0', getPersonalCenterInfo_v1_0);


//==========================================================================
/**
 * 绑定手机号至当前用户
 * @author xc
 * @date 2017-11-20
 *
 * device:   6字段为 一键秀 相关标记
 *           600 一键秀网页端
 *           610 一键秀 android 端
 *           620 一键秀 iOS 端
 *           630 一键秀 嵌入网页端
 *           640 一键秀微信端
 *           650 一键秀小程序端
 * zone: 国际区号, 暂时固定传递 +86
 * mobile: 用户手机号, 验证规则同发送验证码
 * verCode: 六位验证码
 * userId: 主用户, 手机号绑定至该用户
 * 返回: http://114.55.172.253:7000/project/11/interface/api/33
 *      {"success":0,"msg":"失败","data":{}}
 * 测试地址：http://localhost:3000/yjx/v1/user/bindMobileByVerCode_v1_0?device=610
 * */
function bindMobileByVerCode_v1_0 (req,res,next){
    var device = retUtil.numberFromReq(req,'device')||0;
    var zone = retUtil.stringFromReq(req,'zone')||86;
    var mobile = retUtil.numberFromReq(req,'mobile')||0;
    var verCode = retUtil.stringFromReq(req,'verCode')||'';
    var userId = retUtil.numberFromReq(req,'userId')||0;

    if(userId<=0){
        return retUtil.ret_err_json('用户唯一标识无效',res)
    }
    if(!mobile||mobile<0||!verCode||verCode.length<4){
        return retUtil.ret_err_json('参数错误',res);
    }
    userUtil.bindMobileByVerCode_v1_0(device, zone, mobile, verCode, userId, function(err,data){
        if(err){
            return retUtil.ret_err_json(err,res);
        }
        return retUtil.ret_succ_json(data,res);
    })
}
router.get('/bindMobileByVerCode_v1_0', bindMobileByVerCode_v1_0);
router.post('/bindMobileByVerCode_v1_0', bindMobileByVerCode_v1_0);

//==========================================================================
/**
 * 绑定第三方平台至当前账号
 * @author xc
 * @date 2017-11-20
 *
 * device:   6字段为 一键秀 相关标记
 *           600 一键秀网页端
 *           610 一键秀 android 端
 *           620 一键秀 iOS 端
 *           630 一键秀 嵌入网页端
 *           640 一键秀微信端
 *           650 一键秀小程序端
 * userId: 用户唯一标识
 * platform: 第三方平台标记
 *           20 标记微信
 *           21 标记QQ
 *           30 标记小米登录
 *           40 标记新浪微博
 * avatarUrl: 第三方平台用户头像
 * nickName: 第三方平台用户昵称
 * field1: 第三方平台的全平台唯一标识, 如微信的 unionid
 * field2: 第三方平台的单平台唯一标识, 如微信的 openid
 * field3~field5: 预留字段
 *
 * 返回: http://114.55.172.253:7000/project/11/interface/api/34
 *      {"success":0,"msg":"失败","data":{}}
 * 测试地址：http://test.itbour.com:3000/yjx/v1/user/bindThirdPlatform_v1_0?userId=2&field1=abc@itbour.com&platform=11
 * */
function bindThirdPlatform_v1_0(req,res,next){
    var device = retUtil.numberFromReq(req,'device')||0;
    var userId = retUtil.numberFromReq(req,'userId')||0;
    var platform = retUtil.numberFromReq(req,'platform')||0;
    var avatarUrl = retUtil.stringFromReq(req,'avatarUrl')||'';
    var nickName = retUtil.stringFromReq(req,'nickName')||'';
    var field1 = retUtil.stringFromReq(req,'field1')||'';
    var field2 = retUtil.stringFromReq(req,'field2')||'';
    var field3 = retUtil.stringFromReq(req,'field3')||'';
    var field4 = retUtil.stringFromReq(req,'field3')||'';
    var field5 = retUtil.stringFromReq(req,'field3')||'';

    var fields = {
        field1: field1,
        field2: field2,
        field3: field3,
        field4: field4,
        field5: field5
        // TODO
    };

    if(userId<=0){
        return retUtil.ret_err_json('用户唯一标识无效',res)
    }
    if(platform<=0||!field1||field1.length<=0){
        return retUtil.ret_err_json('参数错误',res)
    }
    userUtil.bindThirdPlatform_v1_0(device, userId, platform, avatarUrl, nickName, fields, function(err,data){
        if(err){
            return retUtil.ret_err_json(err,res);
        }
        return retUtil.ret_succ_json(data,res);
    })
}
router.get('/bindThirdPlatform_v1_0', bindThirdPlatform_v1_0);
router.post('/bindThirdPlatform_v1_0', bindThirdPlatform_v1_0);

/**
 * 获取用户已购订单列表
 *
 * @author 毛凯
 * @date 2017-11-18
 *
 * device	是 610  6 字段为 一键秀 相关标记
 *                  600 一键秀网页端
 *                  610 一键秀 android 端
 *                  620 一键秀 iOS 端
 *                  630 一键秀 嵌入网页端
 *                  640 一键秀微信端
 *                  650 一键秀小程序端
 * userId	是 299188 用户唯一标识
 * pageNum	是 0  页码
 * pageSize	是 12 页容量
 * payType 指定订单的支付方式的 json 数组 json 字符串  支付方式：1现金支付，2积分支付, 默认为  [1]
 * states	是 "[10]" 订单状态数组的 json 字符串
 *                                          {
 *                                               YJX_ORDER_STATE_UNPAID = 10,            // 待支付
 *                                               YJX_ORDER_STATE_PAID = 11,              // 已支付
 *                                               YJX_ORDER_STATE_FAIL = 12,              // 支付失败
 *                                               YJX_ORDER_STATE_FABRICATION = 20,       // 制作中
 *                                               YJX_ORDER_STATE_DELIVERY = 30,          // 配送中
 *                                               YJX_ORDER_STATE_COMPLETE = 40,          // 完成
 *                                               YJX_ORDER_STATE_CANCEL = 50             // 取消
 *                                           };
 * withTotalPage 否 1  0/1, 1 标记获取总页数, 0/不传标记不获取总页数
 * 测试地址：http://localhost:3000/yjx/v1/user/getUserOrderList_v1_1?device=6&userId=299163&states=[10]&pageNum=0&pageSize=12&withTotalPage=0
 * */
function getUserOrderList_v1_1 (req,res,next){
    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    var pageNum = retUtil.numberFromReq(req,'pageNum');
    var pageSize  = retUtil.numberFromReq(req,'pageSize');
    var payType = retUtil.arrayFromReq(req,'payType')||[1];
    var states = retUtil.arrayFromReq(req,'states');
    var withTotalPage = retUtil.numberFromReq(req,'withTotalPage');
    if(userId<=0){
        return retUtil.ret_err_json('用户唯一标识无效',res);
    }
    if(pageNum<0){
        return retUtil.ret_err_json('pageNum参数错误',res);
    }
    if(pageSize<=0){
        return retUtil.ret_err_json('pageSize参数错误',res);
    }
    var statesArr = [10,11,12,20,30,40,50];
    if(!states || states.length <= 0){
        return retUtil.ret_err_json('states参数错误',res);
    }
    states = states.toString();
    payType = payType.toString();
    userUtil.getUserOrderList_v1_1(userId,pageNum,pageSize,states,payType,withTotalPage,function(err,data){
        if(err){
            return retUtil.ret_err_json(err,res);
        }
        return retUtil.ret_succ_json(data,res);
    });
}
router.get('/getUserOrderList_v1_1', getUserOrderList_v1_1);
router.post('/getUserOrderList_v1_1', getUserOrderList_v1_1);
/**
 * 获取用户作品反馈列表
 *
 * @author 毛凯
 * @date 2017-12-12
 *
 * device	是 610  6 字段为 一键秀 相关标记
 *                  600 一键秀网页端
 *                  610 一键秀 android 端
 *                  620 一键秀 iOS 端
 *                  630 一键秀 嵌入网页端
 *                  640 一键秀微信端
 *                  650 一键秀小程序端
 * userId	是 299188 用户唯一标识
 * docId    是 4  用户作品唯一标识
 * pageNum	是 0  页码
 * pageSize	是 12 页容量
 * withTotalPage 否 1  0/1, 1 标记获取总页数, 0/不传标记不获取总页数
 * 测试地址：http://localhost:3000/yjx/v1/user/getDocFormList_v1_0?device=610&userId=299188&docId=4&pageNum=0&pageSize=12&withTotalPage=0
 * */
function getDocFormList_v1_0 (req,res,next){
    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    var pageNum = retUtil.numberFromReq(req,'pageNum');
    var pageSize  = retUtil.numberFromReq(req,'pageSize');
    var docId = retUtil.numberFromReq(req,'docId');
    var withTotalPage = retUtil.numberFromReq(req,'withTotalPage');
    if(userId<=0 || docId<=0 ){
        return retUtil.ret_err_json('参数无效',res);
    }
    if(pageNum<0){
        return retUtil.ret_err_json('pageNum参数错误',res);
    }
    if(pageSize<=0){
        return retUtil.ret_err_json('pageSize参数错误',res);
    }
    userUtil.getDocFormList_v1_0(userId,docId,pageNum,pageSize,withTotalPage,function(err,data){
        if(err){
            return retUtil.ret_err_json(err,res);
        }
        return retUtil.ret_succ_json(data,res);
    });
}
router.get('/getDocFormList_v1_0', getDocFormList_v1_0);
router.post('/getDocFormList_v1_0', getDocFormList_v1_0);

/**
 * 自定义用户表单
 *
 * device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * docId	用户作品唯一标识
 * userId	用户唯一标识
 * formInfo	自定义表单信息的 json 字符串, 如: "{\"from_name\": \"xxx\",\"keys\": [\"手机\",\"姓名\",\"地址\"]}"
 *
 * */
function customUserForm_v1_1(req, res, next) {

    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    var docId = retUtil.numberFromReq(req,'docId');
    var formInfoJson = retUtil.stringFromReq(req, 'formInfo');
    if (userId <=0 || docId <= 0 || !formInfoJson || formInfoJson.length <=2 ) {
        return retUtil.ret_err_json('参数错误', res);
    }
    var formInfo = retUtil.safe_parser_JSON_string(formInfoJson);
    if (!formInfo || !formInfo.keys || formInfo.keys.length <1) {
        return retUtil.ret_err_json('参数错误', res);
    }
    if (!formInfo.form_name || formInfo.form_name.length <=0) {
        return retUtil.ret_err_json('参数错误', res);
    }
    // 更新至数据库
    userUtil.customUserForm_v1_1(userId, docId, formInfoJson, function (error) {
        if (error) {
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json({}, res);
    });
}
router.get('/customUserForm_v1_1', customUserForm_v1_1);
router.post('/customUserForm_v1_1', customUserForm_v1_1);



/**
 * 手机号+密码 注册_WEB_1_0
 *
 * @author 毛凯
 * @date 2017-1-25
 *
 * device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * zone 	+86  用户作品唯一标识
 * mobile	18888888888 登录手机号, 验证规则为1开头11位纯数字即可
 * psw	   c5f5327369cb6573975c86141b133bd5 MD5(密码) 值
 * 测试地址：http://localhost:3000/yjx/v1//user/registerByMobileAndPswForWeb_v1_0?device=610&zone=+86&mobile=12345678901&psw= c5f5327369cb6573975c86141b133bd5
 *
 * */
function registerByMobileAndPswForWeb_v1_0(req, res, next) {

    var device = retUtil.numberFromReq(req,'device');
    var zone = retUtil.numberFromReq(req,'zone');
    var mobile =  retUtil.numberFromReq(req,'mobile');
    var psw = retUtil.stringFromReq(req,'psw');
    var verCode = retUtil.stringFromReq(req,'verCode');
    if (device <=0 || mobile <= 0 || !psw || psw.length <=0 ) {
        return retUtil.ret_err_json('手机号或密码错误', res);
    }
    //判断验证码合理性
    if (!verCode) {
        return retUtil.ret_err_json('请输入验证码', res);
    }
    //验证手机号是否合法正则
    var reg = /^1\d{10}$/;
    //验证手机号的合法性
    if(!(reg.test(mobile))){
        return retUtil.ret_err_json("请输入正确的手机号",res);
    }

    // 更新至数据库
    userUtil.registerByMobileAndPswForWeb_v1_0(device,zone, mobile, psw,verCode,function (getErr, data) {
        if (getErr) {
            console.log('yjx/v1/usesr.js [registerByMobileAndPswForWeb_v1_0] registerByMobileAndPswForWeb_v1_0 getErr' + getErr);
            return retUtil.ret_err_json(getErr, res);
        }
        retUtil.ret_succ_json(data,res);
    });
}
router.get('/registerByMobileAndPswForWeb_v1_0', registerByMobileAndPswForWeb_v1_0);
router.post('/registerByMobileAndPswForWeb_v1_0', registerByMobileAndPswForWeb_v1_0);




/**
 * 手机号+密码登录_WEB_1_0
 *
 * @author 毛凯
 * @date 2017-1-25
 *
 * device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * zone 	+86  用户作品唯一标识
 * mobile	18888888888 登录手机号, 验证规则为1开头11位纯数字即可
 * psw	   c5f5327369cb6573975c86141b133bd5 MD5(密码) 值
 * 测试地址：http://localhost:3000/yjx/v1//user/registerByMobileAndPswForWeb_v1_0?device=610&zone=+86&mobile=12345678901&psw= c5f5327369cb6573975c86141b133bd5
 *
 * */
function loginByMobileAndPswForWeb_v1_0(req, res, next) {

    var device = retUtil.numberFromReq(req,'device');
    var zone = retUtil.stringFromReq(req,'zone');
    var mobile =  retUtil.numberFromReq(req,'mobile');
    var psw = retUtil.stringFromReq(req,'psw');
    if (device <=0 || mobile <= 0 || !psw || psw.length <=0 ) {
        return retUtil.ret_err_json('手机号或密码错误', res);
    }
    //验证手机号是否合法正则
    var reg = /^1\d{10}$/;
    //验证手机号的合法性
    if(!(reg.test(mobile))){
        return retUtil.ret_err_json("请输入正确的手机号",res);
    }

    // 更新至数据库
    userUtil.loginByMobileAndPswForWeb_v1_0(device,zone, mobile, psw, function (getErr, data) {
        if (getErr) {
            console.log('yjx/v1/usesr.js [loginByMobileAndPswForWeb_v1_0] loginByMobileAndPswForWeb_v1_0 getErr' + getErr);
            return retUtil.ret_err_json(getErr, res);
        }
        retUtil.ret_succ_json(data,res);
    });
}
router.get('/loginByMobileAndPswForWeb_v1_0', loginByMobileAndPswForWeb_v1_0);
router.post('/loginByMobileAndPswForWeb_v1_0', loginByMobileAndPswForWeb_v1_0);


/**
 * 手机号+验证验证码+密码 重置密码_WEB_1_0
 *
 * @author 毛凯
 * @date 2017-1-25
 *
 * device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * zone 	+86  用户作品唯一标识
 * mobile	18888888888 登录手机号, 验证规则为1开头11位纯数字即可
 * psw	   c5f5327369cb6573975c86141b133bd5 MD5(密码) 值
 * 测试地址：http://localhost:3000/yjx/v1//user/registerByMobileAndPswForWeb_v1_0?device=610&zone=+86&mobile=12345678901&psw= c5f5327369cb6573975c86141b133bd5
 *
 * */
function resetPswForWeb_v1_0(req, res, next) {

    var device = retUtil.numberFromReq(req,'device');
    var zone = retUtil.numberFromReq(req,'zone');
    var mobile =  retUtil.numberFromReq(req,'mobile');
    var psw = retUtil.stringFromReq(req,'psw');
    var verCode = retUtil.stringFromReq(req,'verCode');
    if (device <=0 || mobile <= 0 || !psw || psw.length <=0 ) {
        return retUtil.ret_err_json('手机号或密码错误', res);
    }
    //判断验证码合理性
    if (!verCode) {
        return retUtil.ret_err_json('请输入验证码', res);
    }
    //验证手机号是否合法正则
    var reg = /^1\d{10}$/;
    //验证手机号的合法性
    if(!(reg.test(mobile))){
        return retUtil.ret_err_json("请输入正确的手机号",res);
    }


    // 更新至数据库
    userUtil.resetPswForWeb_v1_0(device,zone, mobile, psw,verCode,function (getErr, data) {
        if (getErr) {
            console.log('yjx/v1/usesr.js [loginByMobileAndPswForWeb_v1_0] loginByMobileAndPswForWeb_v1_0 getErr' + getErr);
            return retUtil.ret_err_json(getErr, res);
        }
        retUtil.ret_succ_json(data,res);
    });
}
router.get('/resetPswForWeb_v1_0', resetPswForWeb_v1_0);
router.post('/resetPswForWeb_v1_0', resetPswForWeb_v1_0);

/**
 * 获取用户作品列表_WEB_1_0
 *
 * @author 毛凯
 * @date 2017-1-26
 *
 *  device: 是
 *           6字段为 一键秀 相关标记
 *           600 一键秀网页端
 *           610 一键秀 android 端
 *           620 一键秀 iOS 端
 *           630 一键秀 嵌入网页端
 *           640 一键秀微信端
 *           650 一键秀小程序端
 *  userId: （用户唯一标识）
 *  pageNum:  页码, 从0开始
 *  pageSize：页容量, 大于0
 *  withTotalPage: 1 标识获取总页数, 0或不传递标识不获取总页数, 默认为0
 *  opTypes:  [1]   opType 数组json 字符串, 1 竖屏(单页/印品等)  2 视频  3 PPT
 * 返回
 *          data 详情参考http://114.55.172.253:7000/project/11/interface/api/40
 *          err {"success":0,"msg":"失败","data":{}}
 * 测试地址：http://localhost:3000/yjx/v1/user/getUserWorkListForWeb_v1_0?device=610&userId=1&pageNum=0&pageSize=4&withTotalPage=1
 * */

function getUserWorkListForWeb_v1_0 (req,res,next){
    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    var pageNum = retUtil.numberFromReq(req,'pageNum')||0;
    var pageSize = retUtil.numberFromReq(req,'pageSize');
    var opTypes = retUtil.arrayFromReq(req,'opTypes')||[2];
    var withTotalPage = retUtil.numberFromReq(req,'withTotalPage');
    if(userId<=0){
        return retUtil.ret_err_json('用户唯一标识无效',res)
    }
    if(pageNum<0){
        return retUtil.ret_err_json('pageNum参数错误',res)
    }
    if(pageSize<=0){
        return retUtil.ret_err_json('pageSize参数错误',res)
    }
    opTypes = opTypes.toString();
    userUtil.getUserWorkListForWeb_v1_0(userId,pageNum,pageSize,withTotalPage,opTypes,function(err,data){
        if(err){
            console.log('yjx/v1/usesr.js [getUserWorkListForWeb_v1_0] getUserWorkListForWeb_v1_0 getErr' + err);
            return retUtil.ret_err_json(err,res)
        }
        return retUtil.ret_succ_json(data,res)
    })
}
router.get('/getUserWorkListForWeb_v1_0', getUserWorkListForWeb_v1_0);
router.post('/getUserWorkListForWeb_v1_0', getUserWorkListForWeb_v1_0);


/**
 * 获取用户视频收藏列表_APP_1_3
 *
 * @author 毛凯
 * @date   2017-3-1
 *
 * device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * userId   用户唯一标识
 * opType   此处固定为2
 * pageNum  页码
 * pageSize  页容量, 需大于0
 * withTotalPage  0/1, 1, 标记需要获取总页数, 未传递或者为0, 标记不获取总页数, 默认为0
 *
 * 接口地址: http://114.55.172.253:7000/project/11/interface/api/1226
 * 测试地址：http://localhost:3000/yjx/v1/user/getUserCollectList_v1_3?device=610&userId=1&pageNum=0&pageSize=4&withTotalPage=1
 * */
function getUserCollectList_v1_3(req, res, next) {

    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    var pageNum = retUtil.numberFromReq(req,'pageNum')|| 0;
    var pageSize = retUtil.numberFromReq(req,'pageSize');
    var opTypes = retUtil.numberFromReq(req,'opTypes')|| 2;
    var withTotalPage = retUtil.numberFromReq(req,'withTotalPage') || 0;
    //验证参数合法性
    if(userId<=0){
        return retUtil.ret_err_json('用户唯一标识无效',res)
    }
    if(pageNum<0){
        return retUtil.ret_err_json('pageNum参数错误',res)
    }
    if(pageSize<=0){
        return retUtil.ret_err_json('pageSize参数错误',res)
    }
    //获取返回结果
    userUtil.getUserCollectList_v1_3(userId,opTypes,pageNum,pageSize,withTotalPage, function (err,data) {
        if (err) {
            console.log('yjx/v1/usesr.js [getUserCollectList_v1_3] getUserCollectList_v1_3 getErr' + err);
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getUserCollectList_v1_3', getUserCollectList_v1_3);
router.post('/getUserCollectList_v1_3', getUserCollectList_v1_3);


/**
 * 获取用户当前积分_WEB_1_1 添加
 *
 * @author 毛凯
 * @date   2017-3-23
 *
 * device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * userId   用户唯一标识
 *
 * 接口地址: http://114.55.172.253:7000/project/11/interface/api/2292
 * 测试地址：http://localhost:3000/yjx/v1/user/getUserCurrentUserPoints_web_v1_1?device=610&userId=1
 * */
function getUserCurrentUserPoints_web_v1_1(req, res, next) {

    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    //验证参数合法性
    if(userId<=0){
        return retUtil.ret_err_json('用户唯一标识无效',res)
    }
    //获取返回结果
    userUtil.getUserPointsInfo(userId, function (err,data) {
        if (err) {
            console.log('yjx/v1/usesr.js [getUserPointsInfo] getUserCurrentUserPoints_web_v1_1 getErr' + err);
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getUserCurrentUserPoints_web_v1_1', getUserCurrentUserPoints_web_v1_1);
router.post('/getUserCurrentUserPoints_web_v1_1', getUserCurrentUserPoints_web_v1_1);



/**
 * 获取用户积分明细列表_WEB_1_1 添加
 *
 * @author 毛凯
 * @date   2017-3-23
 *
 * device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * userId   用户唯一标识
 * pageNum  0  起始页
 * pageSize 12 每页个数
 * types  "[1]"订单类型数组的 json 字符串, [1] 标记获取充值列表, [2] 标记获取消耗列表[1,2]
 * withTotalPage  1 0/1, 1 标记获取总页数, 0/不传标记不获取总页数
 *
 * 接口地址: http://114.55.172.253:7000/project/11/interface/api/2284
 * 测试地址：http://localhost:3000/yjx/v1/user/getUserPointsDetailList_web_v1_1?device=610&userId=1
 * */
function getUserPointsDetailList_web_v1_1(req, res, next) {

    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    var pageNum = retUtil.numberFromReq(req,'pageNum');
    var pageSize = retUtil.numberFromReq(req,'pageSize');
    var types = retUtil.arrayFromReq(req,'types') || [1,2]; // 默认都取
    var withTotalPage = retUtil.stringFromReq(req,'withTotalPage') || 0;

    //验证参数合法性
    if(userId<=0 || pageNum<0 || pageSize<=0 ){
        return retUtil.ret_err_json('参数有误',res)
    }

    types = types.toString();
    //获取返回结果
    userUtil.getUserPointsDetailList_web_v1_1(userId,pageNum,pageSize,types,withTotalPage,function (err,data) {
        if (err) {
            console.log('yjx/v1/usesr.js [getUserPointsInfo] getUserCurrentUserPoints_web_v1_1 getErr' + err);
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getUserPointsDetailList_web_v1_1', getUserPointsDetailList_web_v1_1);
router.post('/getUserPointsDetailList_web_v1_1', getUserPointsDetailList_web_v1_1);


/**
 * 获取用户收益信息_ APP_1_7 添加
 *
 * @author 李强
 * @date 2018-06-08
 *
 * device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * userId   用户唯一标识
 *
 * 接口地址: http://yapi.yijianxiu.com:7000/mock/11/yjx/v1/user/getUserActivityRewardInfo__v1_7
 * 测试地址：http://localhost:3000/yjx/v1/user/getUserActivityRewardInfo__v1_7?device=610&userId=1
 * */
function getUserActivityRewardInfo__v1_7(req, res, next) {

    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');


    //验证参数合法性
    if(userId<=0 ){
        return retUtil.ret_err_json('参数有误',res)
    }
    //获取返回结果
    userUtil.getUserActivityRewardInfo__v1_7(userId,function (err,data) {
        if (err) {
            console.log('yjx/v1/usesr.js[getUserActivityRewardInfo__v1_7] getErr' + err);
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getUserActivityRewardInfo__v1_7', getUserActivityRewardInfo__v1_7);
router.post('/getUserActivityRewardInfo__v1_7', getUserActivityRewardInfo__v1_7);


/**
 * 获取用户画像_ APP_2_0 添加_E
 *
 * @author xc
 * @date 2018-06-19
 *
 *  device:  6字段为 一键秀 相关标记
 *           600 一键秀网页端
 *           610 一键秀 android 端
 *           620 一键秀 iOS 端
 *           630 一键秀 嵌入网页端
 *           640 一键秀微信端
 *           650 一键秀小程序端
 *  userId: （用户唯一标识）
 * 返回: http://yapi.yijianxiu.com:7000/mock/11/yjx/v1/user/getUserProfile_app_v2_0
 * */
function getUserProfile_app_v2_0 (req,res,next){
    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId') || 0;
    if(userId<=0){
        return retUtil.ret_err_json('用户唯一标识无效',res)
    }
    userUtil.getUserProfile_app_v2_0(userId,function(err,data){
        if(err){
            return retUtil.ret_err_json(err,res)
        }
        return retUtil.ret_succ_json(data,res)
    })
}
router.get('/getUserProfile_app_v2_0', getUserProfile_app_v2_0);
router.post('/getUserProfile_app_v2_0', getUserProfile_app_v2_0);



/**
 * 用户申请提现_ APP_1_7 添加
 *
 * @author jackLiu
 * @date   2018-6-8
 *
 * device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * userId   用户唯一标识
 * cashAmount   提现金额, 单位: 分，例如：19998
 * account  提现账户，例如：18888888888@taobao.com
 * accountPlatform  提现平台, 10 微信, 20 支付宝
 *
 * 接口地址: http://yapi.yijianxiu.com:7000/project/11/interface/api/3428
 * 测试地址：http://localhost:3000/yjx/v1/user/applyCashReward_v1_7?device=610&userId=1&cashAmount=120000&account=a@t.com&accountPlatform=20
 * */
function applyCashReward_v1_7(req, res, next) {

    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    var cashAmount = retUtil.numberFromReq(req,'cashAmount');
    var account = retUtil.stringFromReq(req,'account');
    var accountPlatform = retUtil.numberFromReq(req,'accountPlatform');

    //验证参数合法性
    if(userId<=0 || !account || account.length<=0 || accountPlatform!==20){
        return retUtil.ret_err_json('参数有误',res)
    }


    //获取返回结果
    userUtil.applyCashReward_v1_7(device,userId,cashAmount,account,accountPlatform,function (err) {
        if (err) {
            console.log('yjx/v1/usesr.js [applyCashReward_v1_7] applyCashReward_v1_7 getErr' + err);
            return retUtil.ret_err_json(err, res);
        }
        /**
         *data: {
         *    "cashAmount" : 199800,      // 申请提现金额, 单位: 分
         *    "account" : "18888888888",  // 提现账户
         *    "accountPlatform" : 20,     // 提现平台, 10 微信, 20 支付宝
         *    "applyTime" : "2018-06-11 13:45:24",    // 申请提现时间
         *    "applyTimestamp" : 1528701820           // 申请提现的时间戳
         *}
         * */
        var timeStr = new moment().format('YYYY-MM-DD HH:mm:ss');
        var timestamp = new moment().unix();
        var retData = {
            cashAmount : cashAmount,
            account : account,
            accountPlatform : accountPlatform,
            applyTime : timeStr,
            applyTimestamp : timestamp
        };
        return retUtil.ret_succ_json(retData, res);
    });
}
router.get('/applyCashReward_v1_7', applyCashReward_v1_7);
router.post('/applyCashReward_v1_7', applyCashReward_v1_7);

/**
 * 获取用户最后一次提现信息
 *
 * @author 王俊
 * @date 2018-6-09
 *
 * 参数: device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * 参数: userId 用户唯一标识
 */
function getUserLastCashInfo_v1_7(req, res, next) {
    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');

    var opt = {
        device : device,
        userId : userId
    };
    userUtil.getUserLastCashInfo_v1_7(opt, function (error, data) {
        if(error) {
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getUserLastCashInfo_v1_7', getUserLastCashInfo_v1_7);
router.post('/getUserLastCashInfo_v1_7', getUserLastCashInfo_v1_7);


/**
 * 用户收益明细_APP_1_7 添加
 *
 * @author 毛凯
 * @date   2018-6-8
 *
 * device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * userId   用户唯一标识
 * pageNum   页码
 * pageSize  页容量
 * withTotalPage 是否获取总页数
 *
 * 接口地址: http://yapi.yijianxiu.com:7000/project/11/interface/api/3420
 * 测试地址：http://localhost:3000/yjx/v1/user/getUserRewardList_v1_7?device=610&userId=1&pageNum=0&pageSize=12&withTotalPage=0
 * */
function getUserRewardList_v1_7(req, res, next) {

    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    var pageNum = retUtil.numberFromReq(req,'pageNum');
    var pageSize = retUtil.stringFromReq(req,'pageSize');
    var withTotalPage = retUtil.numberFromReq(req,'withTotalPage') || 0;

    //验证参数合法性
    if(userId<=0  || !pageSize || pageNum<0){
        return retUtil.ret_err_json('参数有误',res)
    }
    //获取返回结果
    userUtil.getUserRewardList_v1_7(userId,pageNum,pageSize,withTotalPage,function (err,data) {
        if (err) {
            console.log('yjx/v1/usesr.js [getUserRewardList_v1_7] getUserRewardList_v1_7 getErr' + err);
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getUserRewardList_v1_7', getUserRewardList_v1_7);
router.post('/getUserRewardList_v1_7', getUserRewardList_v1_7);



/*
* 更新用户画像
*
* @author 王俊
* @date 2018-06-19
*
* 参数: device            平台标识
* 参数: userId            用户唯一标识
* 参数: nickName          昵称
* 参数: gender            性别 1 男, 2 女
* 参数: birthInfo         生日: {"year":2018,"month":7,"day":8}
* 参数: occupation        职业: 	[1,2]
* 参数: speciality        特长: 	[101，102，103，104，105][
* 参数: address           地址: {"mobile":1887220261,"name":"呵呵哒","prov":{"id":358,"text":"湖北省"},"city":{"id":960,"text":"武汉市"},"dist":{"id":923,"text":"洪山区"},"detail":"光谷创业街10栋","type":1,"default":1}
*
* 文档地址: http://yapi.yijianxiu.com:7000/project/11/interface/api/3636
* */
function updateUserProfile_app_v2_0(req, res, next) {

    var device = retUtil.numberFromReq(req, 'device');
    var userId = retUtil.numberFromReq(req, 'userId');
    var nickName = retUtil.stringFromReq(req, 'nickName');
    var gender = retUtil.numberFromReq(req, 'gender');
    var birthInfo = retUtil.objectFromReq(req, 'birthInfo');
    var occupation = retUtil.arrayFromReq(req, 'occupation');
    var speciality = retUtil.arrayFromReq(req, 'speciality');
    var address = retUtil.objectFromReq(req, 'address');

    if(!birthInfo || !birthInfo.year || !birthInfo.month || !birthInfo.day) {
        return retUtil.ret_err_json('出生日期错误', res);
    }
    if(!occupation || occupation.length !==1) {
        return retUtil.ret_err_json('职业错误', res);
    }
    if(!speciality || speciality.length > 5 || speciality.length===0) {
        return retUtil.ret_err_json('特长错误', res);
    }
    if(!address) {
        return retUtil.ret_err_json('地址错误', res);
    }


    var opt = {
        device : device,
        userId : userId,
        nickName : nickName,
        gender : gender,
        birthInfo : birthInfo,
        occupation : occupation,
        speciality : speciality,
        address : address
    };

    userUtil.updateUserProfile_app_v2_0(opt, function (error, data) {
        if(error) {
            return retUtil.ret_err_json(error, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/updateUserProfile_app_v2_0', updateUserProfile_app_v2_0);
router.post('/updateUserProfile_app_v2_0', updateUserProfile_app_v2_0);




/**
 * 检测用户是否注册
 *
 * @author 毛凯
 * @date   2018-6-19
 *
 * device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * 参数： mobile   18888888888   要检测的手机号
 * 参数： zone     +86 区号
 *
 * 接口地址: http://yapi.yijianxiu.com:7000/project/11/interface/api/3644
 * 测试地址：http://localhost:3000/yjx/v1/user/checkUserRegister_app_2_0?mobile=18888888888&zone=+86
 * */
function checkUserRegister_app_2_0(req, res, next) {

    var mobile = retUtil.stringFromReq(req,'mobile');
    var zone = retUtil.numberFromReq(req,'zone') || 86;

    //验证参数合法性
    if(!mobile || !zone){
        return retUtil.ret_err_json('参数有误',res)
    }
    if (mobile <= 0 || !((/^1\d{10}$/).test(mobile))) {
        return retUtil.ret_err_json("请输入正确的手机号", res);
    }
    //获取返回结果
    userUtil.checkUserRegister_app_2_0(mobile,function (err,data) {
        if (err) {
            console.log('yjx/v1/usesr.js [checkUserRegister_app_2_0] checkUserRegister_app_2_0 getErr' + err);
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/checkUserRegister_app_2_0', checkUserRegister_app_2_0);
router.post('/checkUserRegister_app_2_0', checkUserRegister_app_2_0);



/**
 * 验证验证码并绑定手机号_ APP_2_0 添加
 *
 * @author 毛凯
 * @date   2018-6-19
 *
 * device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * 参数： userId   18  用户id
 * 参数： mobile   18888888888   要检测的手机号
 * 参数： zone     +86 区号
 * 参数： verCode   022222   验证码
 * 接口地址: http://yapi.yijianxiu.com:7000/project/11/interface/api/3268
 * 测试地址：http://localhost:3000/yjx/v1/user/bindMobileWithCode_app_2_0?userId=18&mobile=18888888888&zone=+86&verCode=0222222
 * */
function bindMobileWithCode_app_2_0(req, res, next) {
    var userId = retUtil.numberFromReq(req,'userId');
    var mobile = retUtil.stringFromReq(req,'mobile');
    var zone = retUtil.numberFromReq(req,'zone') || 86;
    var verCode = retUtil.numberFromReq(req,'verCode');
    //验证参数合法性
    if(!mobile || !zone || !verCode || !userId || userId<=0){
        return retUtil.ret_err_json('参数有误',res)
    }
    if (mobile <= 0 || !((/^1\d{10}$/).test(mobile))) {
        return retUtil.ret_err_json("请输入正确的手机号", res);
    }
    //获取返回结果
    userUtil.bindMobileWithCode_app_2_0(userId,mobile,zone,verCode,function (err,data) {
        if (err) {
            console.log('yjx/v1/usesr.js [bindMobileWithCode_app_2_0] bindMobileWithCode_app_2_0 getErr' + err);
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/bindMobileWithCode_app_2_0', bindMobileWithCode_app_2_0);
router.post('/bindMobileWithCode_app_2_0', bindMobileWithCode_app_2_0);




/**
 * 验证并绑定用户身份证信息_APP_2_1添加
 *
 * @author 毛凯
 * @date   2018-6-19
 *
 * device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * 参数： userId   18  用户id
 * 参数： realName   呵呵呵哒   真实姓名
 * 参数： idCardNum     344444444444444443 身份证号码
 * 参数： idCardThumbs   ["http://oss.itbour.com/1.jpg"]  身份证图片
 * 接口地址: http://yapi.yijianxiu.com:7000/project/11/interface/api/3268
 * 测试地址：http://localhost:3000/yjx/v1/user/bindMobileWithCode_app_2_0?userId=18&mobile=18888888888&zone=+86&verCode=0222222
 * */
function updateUserIdCardInfo_app_v2_1(req, res, next) {
    var userId = retUtil.numberFromReq(req,'userId');
    var realName = retUtil.stringFromReq(req,'realName');
    var idCardNum = retUtil.stringFromReq(req,'idCardNum');
    var idCardThumbs = retUtil.arrayFromReq(req,'idCardThumbs')||[];
    //验证参数合法性
    if(!userId || !realName || !idCardNum || userId<=0 || idCardNum.length <= 0){
        return retUtil.ret_err_json('参数有误',res)
    }
    //获取返回结果
    userUtil.updateUserIdCardInfo_app_v2_1(userId,realName,idCardNum,idCardThumbs,function (err,data) {
        if (err) {
            console.log('yjx/v1/usesr.js [updateUserIdCardInfo_app_v2_1] updateUserIdCardInfo_app_v2_1 getErr' + err);
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json({}, res);
    });
}
router.get('/updateUserIdCardInfo_app_v2_1', updateUserIdCardInfo_app_v2_1);
router.post('/updateUserIdCardInfo_app_v2_1', updateUserIdCardInfo_app_v2_1);




/**
 * 获取用户已填推荐码_ APP_2_1 添加
 *
 * @author 毛凯
 * @date   2018-7-2
 *
 * device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * 参数： userId   18  用户id
 * 参数： actId    12   活动id
 * 接口地址: http://yapi.yijianxiu.com:7000/project/11/interface/api/3764
 * 测试地址：http://localhost:3000/yjx/v1/user/getUserFillCouponCode_app_v2_1?device=1&userId=18&actId=1
 * */
function getUserFillCouponCode_app_v2_1(req, res, next) {
    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    var actId = retUtil.stringFromReq(req,'actId');
    //验证参数合法性
    if(!userId || !device || !actId || userId<=0 || device<= 0 || actId<= 0){
        return retUtil.ret_err_json('参数有误',res)
    }
    //获取返回结果
    userUtil.getUserFillCouponCode_app_v2_1(userId,actId,function (err,data) {
        if (err) {
            console.log('yjx/v1/usesr.js [updateUserIdCardInfo_app_v2_1] updateUserIdCardInfo_app_v2_1 getErr' + err);
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getUserFillCouponCode_app_v2_1', getUserFillCouponCode_app_v2_1);
router.post('/getUserFillCouponCode_app_v2_1', getUserFillCouponCode_app_v2_1);


/**
 * 获取用户作品统计信息_ APP_3_0 添加
 *
 * @author 毛凯
 * @date   2018-7-4
 *
 * device	6 字段为 一键秀 相关标记
 *          600 一键秀网页端
 *          610 一键秀 android 端
 *          620 一键秀 iOS 端
 *          630 一键秀 嵌入网页端
 *          640 一键秀微信端
 *          650 一键秀小程序端
 * 参数： userId   18  用户id
 * 接口地址: http://yapi.yijianxiu.com:7000/project/11/interface/api/3823
 * 测试地址：http://localhost:3000/yjx/v1/user/getUserWorksStatisticalInfo_app_v3_0?device=1&userId=18
 * */
function getUserWorksStatisticalInfo_app_v3_0(req, res, next) {
    var device = retUtil.numberFromReq(req,'device');
    var userId = retUtil.numberFromReq(req,'userId');
    //验证参数合法性
    if(!userId || !device ||  userId<=0 || device<= 0 ){
        return retUtil.ret_err_json('参数有误',res)
    }
    //获取返回结果
    userUtil.getUserWorksStatisticalInfo_app_v3_0(userId,function (err,data) {
        if (err) {
            console.log('yjx/v1/usesr.js [getUserWorksStatisticalInfo_app_v3_0] updateUserIdCardInfo_app_v2_1 getErr' + err);
            return retUtil.ret_err_json(err, res);
        }
        return retUtil.ret_succ_json(data, res);
    });
}
router.get('/getUserWorksStatisticalInfo_app_v3_0', getUserWorksStatisticalInfo_app_v3_0);
router.post('/getUserWorksStatisticalInfo_app_v3_0', getUserWorksStatisticalInfo_app_v3_0);




//==========================================================================
module.exports = router;